/*
    ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
    LPC122x EXT driver - Copyright (C) 2013 Marcin Jokel

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/

/*
 * LPC1227 drivers configuration.
 * The following settings override the default settings present in
 * the various device driver implementation headers.
 * Note that the settings for each driver only have effect if the driver
 * is enabled in halconf.h.
 *
 * IRQ priorities:
 * 3...0        Lowest...highest.
 */

/*
 * HAL driver system settings.
 */
#define LPC122x_PLLCLK_SOURCE               SYSPLLCLKSEL_SYSOSC
#define LPC122x_SYSPLL_MUL                  3
#define LPC122x_SYSPLL_DIV                  8
#define LPC122x_MAINCLK_SOURCE              SYSMAINCLKSEL_PLLOUT
#define LPC122x_SYSABHCLK_DIV               1

/*
 * GPT driver system settings.
 */
#define LPC122x_GPT_USE_CT16B0              TRUE
#define LPC122x_GPT_USE_CT16B1              TRUE
#define LPC122x_GPT_USE_CT32B0              TRUE
#define LPC122x_GPT_USE_CT32B1              TRUE
#define LPC122x_GPT_CT16B0_IRQ_PRIORITY     2
#define LPC122x_GPT_CT16B1_IRQ_PRIORITY     2
#define LPC122x_GPT_CT32B0_IRQ_PRIORITY     2
#define LPC122x_GPT_CT32B1_IRQ_PRIORITY     2

/*
 * SERIAL driver system settings.
 */
#define LPC122x_SERIAL_USE_UART0            TRUE
#define LPC122x_SERIAL_FIFO_PRELOAD         16
#define LPC122x_SERIAL_UART0CLKDIV          1
#define LPC122x_SERIAL_UART0_IRQ_PRIORITY   3
#define LPC122x_SERIAL_TXD0_SELECTOR        TXD0_IS_PIO0_2
#define LPC122x_SERIAL_RXD0_SELECTOR        RXD0_IS_PIO0_1

#define LPC122x_SERIAL_USE_UART1            FALSE
#define LPC122x_SERIAL_FIFO_PRELOAD         16
#define LPC122x_SERIAL_UART1CLKDIV          1
#define LPC122x_SERIAL_UART1_IRQ_PRIORITY   3
#define LPC122x_SERIAL_RXD1_SELECTOR        RXD1_IS_PIO0_8
#define LPC122x_SERIAL_TXD1_SELECTOR        TXD1_IS_PIO0_9

/*
 * SPI driver system settings.
 */
#define LPC122x_SPI_USE_SSP0                TRUE
#define LPC122x_SPI_SSP0CLKDIV              1
#define LPC122x_SPI_SSP0_IRQ_PRIORITY       1
#define LPC122x_SPI_SSP_ERROR_HOOK(spip)    chSysHalt()

/*
 * EXT driver system settings.
 */
#define LPC122x_EXT_USE_EXT0                FALSE
#define LPC122x_EXT_USE_EXT1                FALSE
#define LPC122x_EXT_USE_EXT2                TRUE
#define LPC122x_EXT_EXTI0_IRQ_PRIORITY      3
#define LPC122x_EXT_EXTI1_IRQ_PRIORITY      3
#define LPC122x_EXT_EXTI2_IRQ_PRIORITY      3

/*
 * RTC driver system settings.
 */
#define LPC122x_RTCCLK                      SYSCFG_RTCCLK_1Hz
#define LPC122x_RTC_CLKDIV                  0
#define LPC122x_RTC_USE_ALARM               TRUE
#define LPC122x_RTC_IRQ_PRIORITY            3

/*
 * PWM driver system settings.
 */
#define LPC122x_PWM_USE_CT16B0              FALSE
#define LPC122x_PWM_USE_CT16B1              TRUE
#define LPC122x_PWM_USE_CT32B0              FALSE
#define LPC122x_PWM_USE_CT32B1              FALSE
#define LPC122x_PWM_USE_CT16B0_CH0          FALSE
#define LPC122x_PWM_USE_CT16B0_CH1          FALSE
#define LPC122x_PWM_USE_CT16B1_CH0          TRUE
#define LPC122x_PWM_USE_CT16B1_CH1          TRUE
#define LPC122x_PWM_USE_CT32B0_CH0          FALSE
#define LPC122x_PWM_USE_CT32B0_CH1          FALSE
#define LPC122x_PWM_USE_CT32B1_CH0          FALSE
#define LPC122x_PWM_USE_CT32B1_CH1          FALSE
#define LPC122x_PWM_CT16B0_IRQ_PRIORITY     3
#define LPC122x_PWM_CT16B1_IRQ_PRIORITY     3
#define LPC122x_PWM_CT32B0_IRQ_PRIORITY     3
#define LPC122x_PWM_CT32B1_IRQ_PRIORITY     3
#define LPC122x_PWM_CT16B0_CH0_SELECTOR     PWM_CT16B0_CH0_IS_PIO0_28
#define LPC122x_PWM_CT16B0_CH1_SELECTOR     PWM_CT16B0_CH1_IS_PIO0_29
#define LPC122x_PWM_CT16B1_CH0_SELECTOR     PWM_CT16B1_CH0_IS_PIO1_5
#define LPC122x_PWM_CT16B1_CH1_SELECTOR     PWM_CT16B1_CH1_IS_PIO1_6
#define LPC122x_PWM_CT32B0_CH0_SELECTOR     PWM_CT32B0_CH0_IS_PIO2_4
#define LPC122x_PWM_CT32B0_CH1_SELECTOR     PWM_CT32B0_CH1_IS_PIO0_2
#define LPC122x_PWM_CT32B1_CH0_SELECTOR     PWM_CT32B1_CH0_IS_PIO0_6
#define LPC122x_PWM_CT32B1_CH1_SELECTOR     PWM_CT32B1_CH1_IS_PIO0_7

/*
 * I2C driver system settings.
 */
#define LPC122x_I2C_IRQ_PRIORITY            3
